package com.home_school_platform.dao;

import com.home_school_platform.entity.pojo.Team;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 班级dao接口
 * @author 卓汉杰
 * */
@Repository
@Mapper
public interface TeamDao {

    /**
     * 添加一个班级
     * @param team 班级实体
     * @return 影响行数
     * */
    Integer insertTeam(Team team);

    /**
     * 根据id删除一个班级
     * @param id 需要删除的班级的id
     * @return 影响行数
     * */
    Integer deleteTeamById(Integer id);

    /**
     * 根据id修改班级
     * @param team ,需要修改的班级实体
     * @return 影响行数
     * */
    Integer updateTeamById(Team team);

    /**
     * 根据id查询班级
     * @param id 需要查找的班级的id
     * @return 班级实体
     * */
    Team getTeamById(Integer id);


    /**
     * 根据账号查询班级
     * @param account 需要查找的班级的账号
     * @return 班级实体
     * */
    Team getTeamByAccount(String account);

    /**
     * 根据学校查询所有班级
     * @param schoolId 学校id
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条记录
     * @return  班级列表
     * */
    List<Team> listTeamBySchoolId(@Param("schoolId") Integer schoolId,
                                  @Param("currentPage") Integer currentPage,
                                  @Param("pageSize") Integer pageSize);

    /**
     * 根据学校统计所有班级
     * @param schoolId 学校id
     * @return  数量
     * */
    Integer countTeamBySchoolId(@Param("schoolId") Integer schoolId);


    /**
     * 根据班级名称模糊学校班级
     * @param schoolId 学校id
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条记录
     * @return  班级列表
     * */
    List<Team> listTeamBySchoolIdLikeTeamName(@Param("schoolId") Integer schoolId,
                                  @Param("teamName") String teamName,
                                  @Param("currentPage") Integer currentPage,
                                  @Param("pageSize") Integer pageSize);

    /**
     * 统计班级名称模糊学校班级的数量
     * @param schoolId 学校id
     * @return  数量
     * */
    Integer countTeamBySchoolIdLikeTeamName(@Param("schoolId") Integer schoolId,
                                              @Param("teamName") String teamName);

}
